package Merlion.util.state;

import java.io.Serializable;
import java.util.List;

public class InventoryState implements Serializable {

    private Long itemId;
    private String name;
    private String description;
    private int inHandQty;
    private int reservedQty;
    private int shelfLife;
    private String type;
    private int leadTime;
    private int lotSize;
    private String lotSizeUnit;
    private double caseWeight;
    private double basePrice;
    private int productionRate;
    private double listPrice;
    private double limitPrice;
    private List<Long> productBatches;
    
    //for InventoryBatch
    private Long batchId;
    
    public InventoryState() {
    }
  
    public void createMaterialState(Long id, String name, String description, int inHandQty, int reservedQty, int shelfLife, String type, int leadTime, int lotSize, String lotSizeUnit) {
        this.itemId = id;
        this.name = name;
        this.description = description;
        this.inHandQty = inHandQty;
        this.reservedQty = reservedQty;
        this.shelfLife = shelfLife;
        this.type = type;
        this.leadTime = leadTime;
        this.lotSize = lotSize;
        this.lotSizeUnit = lotSizeUnit;
    }
    
    public void createProductState(Long id, String name, String description, 
            int inHandQty, int reservedQty, int shelfLife, String type, double caseWeight,
            double basePrice, int productionRate, List<Long> productBatches) {
        this.itemId = id;
        this.name = name;
        this.description = description;
        this.inHandQty = inHandQty;
        this.reservedQty = reservedQty;
        this.shelfLife = shelfLife;
        this.type = type;
        this.caseWeight = caseWeight;
        this.basePrice = basePrice;
        this.productionRate = productionRate;
        this.productBatches = productBatches;
    }

    public void createInventoryBatchState(Long batchId, Long itemId, String name, String type, int inHandQty, int reservedQty) {
        this.batchId = batchId;
        this.itemId = itemId;
        this.name = name;
        this.type = type;
        this.inHandQty = inHandQty;
        this.reservedQty = reservedQty;
    }
    
    

    public double getBasePrice() {
        return basePrice;
    }

    public void setBasePrice(double basePrice) {
        this.basePrice = basePrice;
    }

    public double getCaseWeight() {
        return caseWeight;
    }

    public void setCaseWeight(double caseWeight) {
        this.caseWeight = caseWeight;
    }

    public int getReservedQty() {
        return reservedQty;
    }

    public void setReservedQty(int reservedQty) {
        this.reservedQty = reservedQty;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Long getBatchId() {
        return batchId;
    }

    public void setBatchId(Long batchId) {
        this.batchId = batchId;
    }

    public Long getItemId() {
        return itemId;
    }

    public void setItemId(Long itemId) {
        this.itemId = itemId;
    }

    public int getInHandQty() {
        return inHandQty;
    }

    public void setInHandQty(int inHandQty) {
        this.inHandQty = inHandQty;
    }

    public int getLeadTime() {
        return leadTime;
    }

    public void setLeadTime(int leadTime) {
        this.leadTime = leadTime;
    }

    public int getLotSize() {
        return lotSize;
    }

    public void setLotSize(int lotSize) {
        this.lotSize = lotSize;
    }

    public String getLotSizeUnit() {
        return lotSizeUnit;
    }

    public void setLotSizeUnit(String lotSizeUnit) {
        this.lotSizeUnit = lotSizeUnit;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Long> getProductBatches() {
        return productBatches;
    }

    public void setProductBatches(List<Long> productBatches) {
        this.productBatches = productBatches;
    }

    public double getProductionRate() {
        return productionRate;
    }

    public void setProductionRate(int productionRate) {
        this.productionRate = productionRate;
    }

    public int getShelfLife() {
        return shelfLife;
    }

    public void setShelfLife(int shelfLife) {
        this.shelfLife = shelfLife;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public double getLimitPrice() {
        return limitPrice;
    }

    public void setLimitPrice(double limitPrice) {
        this.limitPrice = limitPrice;
    }

    public double getListPrice() {
        return listPrice;
    }

    public void setListPrice(double listPrice) {
        this.listPrice = listPrice;
    }
}
